package com.wh.wisdomsite.xbox.st.service;

import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.IService;
import com.wh.wisdomsite.xbox.pojo.st.PurchaseDetailIn;
import com.wh.wisdomsite.xbox.pojo.st.StoreOutConfirmIn;
import com.wh.wisdomsite.xbox.st.entity.Store;

import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;

/**
 * 库存Service
 * @version V1.0
 * @author: 杨世强
 * @Package com.wh.wisdomsite.xbox.st.service
 * @date 2018-12-24 14:59
 * @Copyright 企业版权所有
 * @Company 贵州万华科技有限公司Copyright (c) 2018
 */
public abstract interface IStoreService extends IService<Store> {
    /**
     * 获取完整信息的store分页列表
     * @param var1
     * @param var2
     * @return
     */
    Page<Map<String,Object>> getMapsPage(Page var1, Wrapper<Store> var2);


    /**
     * 根据条件获取库存详情store列表
     * @param var1
     * @param var2
     * @return
     */
    Page<Map<String,Object>> getMapsDetailPage(Page var1, Wrapper<Store> var2);

    /**
     * 保存出库单
     * @param storeOutRecordList
     * @return
     */
    void savePull(List<StoreOutConfirmIn> storeOutRecordList, String userId) throws Exception;

    /**
     * 获取store出入库详情分页
     * @param var1
     * @param var2
     * @return
     */
    Page<Map<String,Object>> getStoreInAndOut(Page var1, Wrapper<Store> var2);

    /**
     * 保存流程入库
     * @param userId
     * @param pdi
     * @param index
     * @param uuid
     * @throws Exception
     */
    void savePutByLc(String userId,PurchaseDetailIn pdi,int index,String uuid) throws Exception;

    /**
     * 保存填写入库单
     * @param coId
     * @param userId
     * @param request
     * @throws Exception
     */
    void savePutByRkt(String coId,String userId, HttpServletRequest request) throws Exception;

    /**
     * 根据合同id和物料id获得库存Id
     * @param coId
     * @param maId
     * @param storeNum
     * @return
     * @throws Exception
     */
    Store getStoreById(String coId,String maId,String storeNum) throws Exception;

}
